
package br.com.comprasPublicas.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.NamedNativeQueries;
import org.hibernate.annotations.NamedNativeQuery;

/**
 *
 * @author helsen_rafael
 * @since 11/01/11
 */
@Entity
@NamedNativeQueries({
        @NamedNativeQuery(name="orderById_pes", query="SELECT * FROM pessoa ORDER BY id_pessoa",resultClass=Pessoa.class),
        @NamedNativeQuery(name="select_max_id_pes", query="SELECT * FROM pessoa",resultClass=Pessoa.class)
})
public class Pessoa implements Serializable  {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id_pessoa;

    @Column(name="tipo_pessoa", length=1)
    private String tipo_pessoa;

    @Column(name="observacoes")
    private String observacoes;

    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data_abertura;

    @Column(name="email")
    private String email;

    @Column(name="site")
    private String site;

    @OneToMany(mappedBy="pessoa",fetch=FetchType.LAZY)
    @Cascade(CascadeType.ALL)
    private Set<Endereco> endereco;

    @OneToMany(mappedBy="pessoa",fetch=FetchType.LAZY)
    @Cascade(CascadeType.ALL)
    private Set<Telefone> telefone;

    @Column(name="situacao")
    private String situacao;//inativa, devedora, ...

    @Column(name="total_gasto")
    private double total_gasto;

    @Column(name="cpf_cnpj")
    private String cpf_cnpj;

    @Column(name="rg_inscr_est")
    private String rg_inscr_est;

    @Column(name="nome_razao_soc")
    private String nome_razao_soc;

    @Column(name="nome_fantasia")
    private String nome_fantasia;
    @Cascade(CascadeType.ALL)

    //Abaixo os Encapsulamentos dos Campos

    public int getId_pessoa() {
        return id_pessoa;
    }

    
    public void setId_pessoa(int id_pessoa) {
        this.id_pessoa = id_pessoa;
    }

   
    public String getObservacoes() {
        return observacoes;
    }

    
    public void setObservacoes(String observacoes) {
        this.observacoes = observacoes;
    }

    
    public Date getData_abertura() {
        return data_abertura;
    }

   
    public void setData_abertura(Date data_abertura) {
        this.data_abertura = data_abertura;
    }

   
    public String getEmail() {
        return email;
    }

   
    public void setEmail(String email) {
        this.email = email;
    }

  
    public String getSite() {
        return site;
    }

    
    public void setSite(String site) {
        this.site = site;
    }

    
    public String getSituacao() {
        return situacao;
    }

    
    public void setSituacao(String situacao) {
        this.situacao = situacao;
    }

    
    public double getTotal_gasto() {
        return total_gasto;
    }

    
    public void setTotal_gasto(double total_gasto) {
        this.total_gasto = total_gasto;
    }

    
    public Set<Telefone> getTelefone() {
        return telefone;
    }

    
    public void setTelefone(Set<Telefone> telefone) {
        this.telefone = telefone;
    }

    public String getCpf_cnpj() {
        return cpf_cnpj;
    }

   
    public void setCpf_cnpj(String cpf_cnpj) {
        this.cpf_cnpj = cpf_cnpj;
    }

   
    public String getRg_inscr_est() {
        return rg_inscr_est;
    }

   
    public void setRg_inscr_est(String rg_inscr_est) {
        this.rg_inscr_est = rg_inscr_est;
    }

   
    public String getNome_razao_soc() {
        return nome_razao_soc;
    }

   
    public void setNome_razao_soc(String nome_razao_soc) {
        this.nome_razao_soc = nome_razao_soc;
    }

    
    public String getTipo_pessoa() {
        return tipo_pessoa;
    }

    public void setTipo_pessoa(String tipo_pessoa) {
        this.tipo_pessoa = tipo_pessoa;
    }

    public String getNome_fantasia() {
        return nome_fantasia;
    }

  
    public void setNome_fantasia(String nome_fantasia) {
        this.nome_fantasia = nome_fantasia;
    }

    /**
     * @return the endereco
     */
    public Set<Endereco> getEndereco() {
        return endereco;
    }

    /**
     * @param endereco the endereco to set
     */
    public void setEndereco(Set<Endereco> endereco) {
        this.endereco = endereco;
    }

    
}
